# -*- coding: utf-8 -*-
"""
@Time    : 2024/10/10 10:58 
@Author  : ZhangShenao 
@File    : 3.多线程.py 
@Desc    : 多线程编程

目前Python推荐使用threading模块进行多线程开发
该模块对多线程提供了更好的面向对象的封装

比较遗憾的一件事情是Python的多线程并不能发挥CPU的多核特性
这是因为Python的解释器有一个“全局解释器锁”(GIL)的东西
任何线程执行前必须先获得GIL锁
然后每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行
这是一个历史遗留问题
但是即便如此,使用多线程在提升执行效率和改善用户体验方面仍然是有积极意义的
"""
import time

from download_task import DownTask

if __name__ == '__main__':
    start = time.time()

    # 创建自定义线程
    t1 = DownTask(filename="Python从入门到放弃.pdf")

    # 调用start()方法,启动线程
    t1.start()

    t2 = DownTask("LangChain实战.txt")
    t2.start()

    # 调用join方法,等待线程执行完成
    t1.join()
    t2.join()

    end = time.time()
    print(f"下载总耗时：{end - start:.2f}秒")
